home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Games Collection 1 / software vault.zip / software vault / CDR10 / YICN23.ZIP / DEMO / SOURCE.ZIP / YAKDEMO.CPP < prev   
C/C++ Source or Header  |  1993-02-28  |  10KB  |  218 lines

  1. #include "yaklib.h"
  2. #include "yakpal.h"
  3. #include "yakwin.h"
  4. #include "yakfont.h"
  5. #include "yakscrol.h"
  6. #include "yakpanel.h"
  7. #include "xrect.h"
  8. #include <conio.h>
  9. #include <string.h>
  10. #include <alloc.h>
  11.  
  12. #define C_QUIT 1
  13. #define C_ICON 2
  14. #define C_ANIMICON 3
  15. #define C_ANIMAP_REG 4
  16. #define C_ANIMAP_FAST 5
  17. #define C_MOUSE_JSTCK 6
  18. #define C_WINDOWS 7
  19. #define C_GADGETS 8
  20. #define C_YAKLIBS 9
  21. #define C_SOUNDS 10
  22. #define C_PALETTES 11
  23. #define C_FONTS 12
  24. #define C_SUPPORT 13
  25. #define C_BUTTONPRESS 14
  26. #define C_LABELPRESS 15
  27. #define C_AFTER 16
  28.  
  29. void stars(void);
  30. void iconDemo(void);
  31. void animDemo(void);
  32. void amapDemo(void);
  33. void beetDemo(void);
  34.  
  35. yakLib myYakLib("yakdemo");
  36. yakLib sb1Lib("yakdemo");
  37. yakScroller buttonScroller(10,10,110,100, (char *)myYakLib.loadToMem("button.txt"));
  38. yakScroller labelScroller(20,20,120,110, (char *)myYakLib.loadToMem("label.txt"));
  39. yakScroller myYakScroller(0,0,210,111, (char *)myYakLib.loadToMem("welcome.txt"));
  40. yakPanel newYakPanel(0,0,100,100);
  41. yakPanel mainMenu(0,0,110,200);
  42. yakFont myYakFont("6x8b.fnt", &myYakLib);
  43. yakPalette myYakPalette("standard.ypl", &myYakLib);
  44. icon yakLogo;
  45.  
  46. void resetScreen(void)
  47. {
  48.   static char * adjectives[8] = {"power.", "compatibility.", "versatility.", "usefulness.",
  49.                               "cost.", "artistry.", "value.", "simplicity."};
  50.   static int sloganCounter;
  51.   mouse.hide();
  52.   char slogan[80];
  53.   strcpy(slogan, "The difference is...");
  54.   strcat(slogan, adjectives[sloganCounter++ % 8]);
  55.   x_set_mode(0,340);
  56.   x_rect_fill(0,0,320,200,VisiblePageOffs,0);
  57.   myYakFont.use();
  58.   myYakPalette.put();
  59.   yakLogo.showMasked(134,30,VisiblePageOffs);
  60.   x_printf(212 - (strlen(slogan)*CharWidth/2), 80, VisiblePageOffs, 15, slogan);
  61.   yakWindow::drawAll();
  62.   mainMenu.shuffleToTop();
  63.   yakWindow::activeWindow = &mainMenu;
  64.   mouse.show();
  65. }
  66.  
  67.  
  68. void main(int argCount, char ** argVector)
  69. {
  70.   x_set_mode(0,340);
  71.   x_text_init();
  72.   yakLogo.load("yax.yak", icon::normal, &myYakLib);
  73.   stars();
  74.   resetScreen();
  75.   strcpy(myYakScroller.title, "Welcome!");
  76.   myYakScroller.activate(50,50);
  77.   strcpy(mainMenu.title, "Main Menu");
  78.   mainMenu.myFlags &= ~(yakWindow::isCloseable | yakWindow::isDraggable);
  79.   mainMenu.add(new gadgetNode(new label(2,10,'Q', C_QUIT, "Quit demo", 15, 0),
  80.                new gadgetNode(new label(2,20,'!', C_ICON, "Icons", 15, 0),
  81.                new gadgetNode(new label(2,30,'!', C_ANIMICON, "Animicons", 15, 0),
  82.                new gadgetNode(new label(2,40,'!', C_ANIMAP_REG, "Animaps (regular)", 15, 0),
  83.                new gadgetNode(new label(2,50,'!', C_ANIMAP_FAST, "Animaps (smart)", 15, 0),
  84.                new gadgetNode(new label(2,60,'!', C_MOUSE_JSTCK, "Mouse/Jstick/Kbd", 15, 0),
  85.                new gadgetNode(new label(2,70,'!', C_WINDOWS, "Windows",15, 0),
  86.                new gadgetNode(new label(2,80,'!', C_GADGETS, "Gadgets", 15, 0),
  87.                new gadgetNode(new label(2,90,'!', C_YAKLIBS, "yakLibs", 15, 0),
  88.                new gadgetNode(new label(2,100,'!',C_SOUNDS, "Sound Support", 15,0),
  89.                new gadgetNode(new label(2,110,'!',C_PALETTES, "Palettes", 15, 0),
  90.                new gadgetNode(new label(2,120,'!',C_FONTS, "Fonts", 15, 0),
  91.                new gadgetNode(new label(2,130,'!',C_SUPPORT, "Support Programs", 15, 0),
  92.                new gadgetNode(new label(2,140,'!',C_AFTER, "Afterword", 15,0),
  93.                NULL)))))))))))))));
  94.   strcpy(newYakPanel.title, "Demo yakPanel!");
  95.   newYakPanel.x = 170;
  96.   newYakPanel.y = 50;
  97.   newYakPanel.add(new gadgetNode(new pSwitch(2,10,'!',"light",icon::normal, &myYakLib),
  98.                    new gadgetNode(new pSwitch(18,10,'!',"light", icon::normal, &myYakLib),
  99.                    new gadgetNode(new pSwitch(34,10,'!',"light", icon::normal, &myYakLib),
  100.                    new gadgetNode(new pSwitch(49,10,'!',"toggl", icon::normal, &myYakLib),
  101.                    new gadgetNode(new pSwitch(65,10,'!',"toggl", icon::normal, &myYakLib),
  102.                    new gadgetNode(new pSwitch(81,10,'!',"toggl", icon::normal, &myYakLib),
  103.                    new gadgetNode(new pSwitch(2,60, '!',"grumjug", icon::normal, &myYakLib, gadget::touchPad),
  104.                    new gadgetNode(new slider(2,26,50,10,0,100),
  105.                    new gadgetNode(new slider(2,37,50,15,0,100,36,10,47),
  106.                    new gadgetNode(new button(2,80,'1',C_BUTTONPRESS, "button", icon::normal, &myYakLib),
  107.                    new gadgetNode(new label(35,85,'2',C_LABELPRESS, "Press Me!", 1, 47),
  108.                    NULL))))))))))));
  109.  
  110.   mainMenu.open();
  111.   mouse.init();
  112.   resetScreen();
  113.   int command = 0;
  114.   while (command != C_QUIT)
  115.   {
  116.     if (argVector[1][0] == '+')
  117.       x_bgprintf(2,180,VisiblePageOffs,15,0,"Free Mem: %ld  ",coreleft());
  118.     command = yakWindow::advance();
  119.     switch(command)
  120.     {
  121.       case C_BUTTONPRESS: buttonScroller.shuffleToTop(); break;
  122.       case C_LABELPRESS : labelScroller.shuffleToTop(); break;
  123.       case C_ICON : mouse.hide();
  124.                     myYakScroller.newText(myYakLib.loadToMem("icon.txt"));
  125.                     strcpy(myYakScroller.title, "The Icon class");
  126.                     myYakScroller.activate(50,50);
  127.                     iconDemo();
  128.                     resetScreen();
  129.                     mouse.show();
  130.                     break;
  131.       case C_ANIMICON : mouse.hide();
  132.                     myYakScroller.newText((char *)myYakLib.loadToMem("animicon.txt"));
  133.                     strcpy(myYakScroller.title, "The Animicon Class");
  134.                     myYakScroller.activate(50,50);
  135.                     animDemo();
  136.                     resetScreen();
  137.                     mouse.show();
  138.                     break;
  139.       case C_ANIMAP_REG : mouse.hide();
  140.                     myYakScroller.newText((char *)myYakLib.loadToMem("animap.txt"));
  141.                     strcpy(myYakScroller.title, "Animaps (regular)");
  142.                     myYakScroller.activate(50,50);
  143.                     amapDemo();
  144.                     resetScreen();
  145.                     mouse.show();
  146.                     break;
  147.       case C_ANIMAP_FAST : mouse.hide();
  148.                     myYakScroller.newText((char *)myYakLib.loadToMem("beetdemo.txt"));
  149.                     strcpy(myYakScroller.title, "Animaps (smart)");
  150.                     myYakScroller.activate(50,50);
  151.                     beetDemo();
  152.                     resetScreen();
  153.                     mouse.show();
  154.                     break;
  155.       case C_MOUSE_JSTCK : myYakScroller.newText((char *)myYakLib.loadToMem("mjstk.txt"));
  156.                     strcpy(myYakScroller.title, "Mouse/Joystick/Keyboard");
  157.                     myYakScroller.activate(50,50);
  158.                     break;
  159.       case C_WINDOWS : myYakScroller.newText((char *)myYakLib.loadToMem("windows.txt"));
  160.                     strcpy(myYakScroller.title, "yakWindows");
  161.                     myYakScroller.activate(50,50);
  162.                     for (int windowCounter = 0; windowCounter < 5; ++windowCounter)
  163.                     {
  164.                       yakScroller * newScroller = new yakScroller(100+random(50), 50+random(50), 250+random(50), 120 + random(50), (char *)myYakLib.loadToMem("windemo.txt"));
  165.                       strcpy(newScroller->title, "Demo Window!");
  166.                       newScroller->titleBarColor = random(256);
  167.                       newScroller->textColor = random(256);
  168.                       newScroller->boxColor = random(256);
  169.                       newScroller->myFlags |= yakWindow::isTemporary;
  170.                       newScroller->open();
  171.                     }
  172.                     break;
  173.       case C_GADGETS : myYakScroller.newText((char *)myYakLib.loadToMem("gadgets.txt"));
  174.                     strcpy(myYakScroller.title, "Gadgets");
  175.                     myYakScroller.activate(50,50);
  176.                     newYakPanel.shuffleToTop();
  177.                     break;
  178.       case C_YAKLIBS : myYakScroller.newText((char *)myYakLib.loadToMem("yaklibs.txt"));
  179.                     strcpy(myYakScroller.title, "yakLibs");
  180.                     myYakScroller.activate(50,50);
  181.                     break;
  182.       case C_SOUNDS : myYakScroller.newText((char *)myYakLib.loadToMem("sounds.txt"));
  183.                     strcpy(myYakScroller.title, "Sounds");
  184.                     myYakScroller.activate(50,50);
  185.                     break;
  186.       case C_PALETTES : myYakScroller.newText((char *)myYakLib.loadToMem("yakpal.txt"));
  187.                     strcpy(myYakScroller.title, "yakPalettes");
  188.                     myYakScroller.activate(50,50);
  189.                     yakPalette demoYakPalette("standard.ypl", &myYakLib);
  190.                     while (!kbhit())
  191.                     {
  192.                       demoYakPalette.rotate(yakPalette::down);
  193.                       demoYakPalette.put();
  194.                     }
  195.                     myYakPalette.put();
  196.                     break;
  197.       case C_FONTS : myYakScroller.newText((char *)myYakLib.loadToMem("fonts1.txt"));
  198.                     strcpy(myYakScroller.title, "yakFonts");
  199.                     myYakScroller.activate(50,50);
  200.                     yakFont demoFont("morning.fnt", &myYakLib);
  201.                     demoFont.use();
  202.                     myYakScroller.newText((char *)myYakLib.loadToMem("fonts2.txt"));
  203.                     myYakScroller.activate(50,50);
  204.                     myYakFont.use();
  205.                     break;
  206.       case C_SUPPORT : myYakScroller.newText((char *)myYakLib.loadToMem("support.txt"));
  207.                     strcpy(myYakScroller.title, "Support Programs");
  208.                     myYakScroller.activate(50,50);
  209.                     break;
  210.       case C_AFTER : myYakScroller.newText((char *)myYakLib.loadToMem("after.txt"));
  211.                     strcpy(myYakScroller.title, "Afterword");
  212.                     myYakScroller.activate(50,50);
  213.                     break;
  214.     }
  215.   }
  216.   mouse.remove();
  217.   x_text_mode();
  218. }